#ifndef WHEN_CALLED_RETURN_H
#define WHEN_CALLED_RETURN_H

#include "WhenCalled.h"

////////////////////////////////////////////////////////////////////////////////////////////////////

template<typename T, typename TResult>
class WhenCalledReturn : public WhenCalled<T>
{
public:
    void willReturn(TResult value);
};

template<typename T, typename TResult>
void WhenCalledReturn<T, TResult>::willReturn(TResult value)
{
}

////////////////////////////////////////////////////////////////////////////////////////////////////

template<typename T, typename TArg, typename TResult>
class WhenCalledReturnArg : public WhenCalledArg<T, TArg>
{
};

////////////////////////////////////////////////////////////////////////////////////////////////////

template<typename T, typename TArg1, typename TArg2, typename TResult>
class WhenCalledReturnArgs2 : public WhenCalledArgs2<T, TArg1, TArg2>
{
};

////////////////////////////////////////////////////////////////////////////////////////////////////

template<typename T, typename TArg1, typename TArg2, typename TArg3, typename TResult>
class WhenCalledReturnArgs3 : public WhenCalledArgs3<T, TArg1, TArg2, TArg3>
{
};

////////////////////////////////////////////////////////////////////////////////////////////////////

template<typename T, typename TArg1, typename TArg2, typename TArg3, typename TArg4, typename TResult>
class WhenCalledReturnArgs4 : public WhenCalledArgs4<T, TArg1, TArg2, TArg3, TArg4>
{
};

////////////////////////////////////////////////////////////////////////////////////////////////////

#endif
